#ifndef INFINITY_GAME_MODE_H
#	define INFINITY_GAME_MODE_H

namespace infinity {

class GameMode
{
public : //! @name Constants
	//! @{
	static const int NAME_MAX_LENGTH = 32;
	//! @}

public : //! @name Construction & Destruction
	//! @{
	GameMode(const char* name);
	virtual ~GameMode();
	//! @}

public : //! @name Commands
	//! @{
	virtual void install() { ; }
	virtual void update(const dw::float32 deltaT) { ; }
	virtual void render() { ; }
	virtual void renderDebug() { ; }
	virtual void term() { ; }
	//! @}

public : //! @name State
	//! @{
	const char* getName() const ;
	//! @}

private : //! @name Data
	//! @{
	char m_name[NAME_MAX_LENGTH];
	//! @}
};

} // namespace infinity

#include "gamemode.inl"

#endif // !INFINITY_GAME_MODE_H
